package icu.qx.pro.service;

import java.util.List;

import com.ruoyi.system.api.domain.SysUser;
import icu.qx.pro.domain.ProWorkPeo;
import icu.qx.pro.domain.ProWorkReport;
import icu.qx.pro.domain.ProWorkTask;
import icu.qx.pro.domain.pbs.PbsProcedure;
import icu.qx.pro.domain.pbs.PbsProcedureRoute;
import icu.qx.pro.domain.pbs.PbsWorkCell;
import org.apache.ibatis.annotations.Param;

/**
 * 工单任务Service接口
 *
 * @author yong
 * @date 2024-06-24
 */
public interface IProWorkTaskService {
    /**
     * 查询工单任务
     *
     * @param wtaskCode 工单任务主键
     * @return 工单任务
     */
    public ProWorkTask selectProWorkTaskByWtaskCode(String wtaskCode);

    /**
     * 通过ordercode 获取 task
     */
    List<ProWorkTask> selectTaskListByOrderCode(@Param("wtaskWoCode") String wtaskWoCode);

    /**
     * 查询工单任务列表
     *
     * @param proWorkTask 工单任务
     * @return 工单任务集合
     */
    public List<ProWorkTask> selectProWorkTaskList(ProWorkTask proWorkTask);

    /**
     * 查询工单任务中的工艺路线
     */
    public List<PbsProcedureRoute> selectRouteInTask();

    /**
     * 查询工单任务中的工序
     */
    public List<PbsProcedure> selectProcedureInTask();

    /**
     * 查询工单任务中的生产车间
     */
    public List<PbsWorkCell> selectWorkCellInTask();

    /**
     * 获取工单任务的工作人员
     */
    List<SysUser> selectTaskPeo(String wtaskCode);

    /**
     * 新增工单任务
     *
     * @param proWorkTask 工单任务
     * @return 结果
     */
    public int insertProWorkTask(ProWorkTask proWorkTask);

    /**
     * 修改工单任务
     *
     * @param proWorkTask 工单任务
     * @return 结果
     */
    int updateProWorkTask(ProWorkTask proWorkTask);

    /**
     * 派工
     *
     * @param proWorkTask 工单任务
     * @return 结果
     */
    int arrangePeo(ProWorkTask proWorkTask, List<ProWorkPeo> proWorkPeo);

    /**
     * 开工
     */
    int startWork(ProWorkTask proWorkTask);

    /**
     * 批量删除工单任务
     *
     * @param wtaskCodes 需要删除的工单任务主键集合
     * @return 结果
     */
    public int deleteProWorkTaskByWtaskCodes(String[] wtaskCodes);

    /**
     * 删除工单任务信息
     *
     * @param wtaskCode 工单任务主键
     * @return 结果
     */
    public int deleteProWorkTaskByWtaskCode(String wtaskCode);
}
